package CONTABILIDAD_MODELO;

import Conexion.Conexion;
import java.sql.SQLException;
import java.sql.ResultSet;
import java.util.ArrayList;

import java.util.List;

public class CON_RECURRENTES_MENSUALES {

    private Double TIPO;
    private int ANO;
    private Double ID_COMPROBANTE;
    private int MES;
    private Conexion con = null;

    public CON_RECURRENTES_MENSUALES() {
    }

    public CON_RECURRENTES_MENSUALES(Double TIPO, int ANO, Double ID_COMPROBANTE, int MES) {
        this.TIPO = TIPO;
        this.ANO = ANO;
        this.ID_COMPROBANTE = ID_COMPROBANTE;
        this.MES = MES;
    }

    public boolean Insertar() throws SQLException {        
        String consulta = "insert into BROKER.CON_RECURRENTES_MENSUALES(TIPO, ANO, ID_COMPROBANTE, MES) VALUES (" + TIPO + "," + ANO + "," + ID_COMPROBANTE + "," + MES + ")";
        con.EjecutarSentencia(consulta);
        return true;
    }

    public boolean EliminarXid(Double id_comprobante) {
        try {
            String consulta = "delete from BROKER.CON_RECURRENTES_MENSUALES where ID_COMPROBANTE= " + id_comprobante;
            con.EjecutarSentencia(consulta);
            return true;
        } catch (Exception e) {
            e.printStackTrace();
            return false;
        }
    }

    public List<CON_RECURRENTES_MENSUALES> Todos() {
        try {
            String consulta = "select * from BROKER.CON_RECURRENTES_MENSUALES";
            ResultSet rs = con.EjecutarConsulta(consulta);
            return Cargar(rs);
        } catch (Exception e) {
            e.printStackTrace();
            return null;
        }
    }
    
    public boolean Existe(int mes, int ano,Double tipo) throws SQLException {
            String consulta = "select * from BROKER.CON_RECURRENTES_MENSUALES where MES ="+mes+" and ANO="+ano+" and TIPO ="+tipo;
            ResultSet rs = con.EjecutarConsulta(consulta);
            if(Cargar(rs).size()>0)
                return true;
            else
                return false;        
    }
    
    public String  TodosXAnoYmes(int ano, int mes) throws SQLException {
        String consulta = "SELECT CASE CON_COMPROBANTE.CODIGO_RECURRENTE \n" +
                        "when 1 then 'Ajuste por diferencia de cambio' \n" +
                        "when 2 then 'Ajuste inflacionario'\n" +
                        "when 3 then 'Ajuste Inflacionario no monetario'\n" +
                        "else 'Ajuste por Redondeo' END  AS nombre \n" +
                        "FROM BROKER.CON_COMPROBANTE\n" +
                        "WHERE (CON_COMPROBANTE.CODIGO LIKE '%-"+mes+"-"+ano+"')\n" +
                        "AND( (CON_COMPROBANTE.CODIGO_RECURRENTE =1) \n" +
                        "OR(CON_COMPROBANTE.CODIGO_RECURRENTE =2)\n" +
                        "OR (CON_COMPROBANTE.CODIGO_RECURRENTE =3)\n" +
                        "OR(CON_COMPROBANTE.CODIGO_RECURRENTE =4))\n" +
                        "AND CON_COMPROBANTE.ESTADO_ANULADO=0        \n" +
                        "GROUP BY CON_COMPROBANTE.CODIGO_RECURRENTE,\n" +
                        "CON_COMPROBANTE.ESTADO_RECURRENTE,\n" +
                        "CON_COMPROBANTE.CODIGO,\n" +
                        "CON_COMPROBANTE.TIPO,\n" +
                        "CON_COMPROBANTE.FECHA\n" +
                        "ORDER BY CON_COMPROBANTE.CODIGO_RECURRENTE ASC";
        ResultSet rs = con.EjecutarConsulta(consulta);
        String resultado ="";
        while(rs.next())
        {
            resultado+=rs.getString("nombre")+"\n";
        }
        return resultado;
    }

    public List<CON_RECURRENTES_MENSUALES> Cargar(ResultSet rs) {
        try {
            List<CON_RECURRENTES_MENSUALES> lista = new ArrayList<CON_RECURRENTES_MENSUALES>();
            while (rs.next()) {
                CON_RECURRENTES_MENSUALES objeto = new CON_RECURRENTES_MENSUALES();
                objeto.setTIPO(rs.getDouble("TIPO"));
                objeto.setANO(rs.getInt("ANO"));
                objeto.setID_COMPROBANTE(rs.getDouble("ID_COMPROBANTE"));
                objeto.setMES(rs.getInt("MES"));
                objeto.setCon(con);
                lista.add(objeto);
            }
            return lista;
        } catch (SQLException ex) {
            ex.printStackTrace();
            return null;
        }
    }

    public double getTIPO() {
        return TIPO;
    }

    public void setTIPO(double TIPO) {
        this.TIPO = TIPO;
    }

    public int getANO() {
        return ANO;
    }

    public void setANO(int ANO) {
        this.ANO = ANO;
    }

    public double getID_COMPROBANTE() {
        return ID_COMPROBANTE;
    }

    public void setID_COMPROBANTE(double ID_COMPROBANTE) {
        this.ID_COMPROBANTE = ID_COMPROBANTE;
    }

    public int getMES() {
        return MES;
    }

    public void setMES(int MES) {
        this.MES = MES;
    }

    public Conexion getCon() {
        return this.con;
    }

    public void setCon(Conexion con) {
        this.con = con;
    }
}
